package manager;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import base.Base;
import bean.Utilisateur;
import bean.Bateau;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

@ManagedBean
@SessionScoped
public class Manager {
	
	Bateau bateau;
	Utilisateur utilisateur = null;
	List <Bateau> listeBateaux = null;
	List <Utilisateur> listeUtilisateurs = null;
	private EntityManager em;
	
	public Manager() {
		bateau = new Bateau();
		utilisateur = new Utilisateur();
		listeBateaux = new ArrayList<Bateau>();
		listeUtilisateurs = new ArrayList<Utilisateur>();
		EntityManagerFactory emf = 
				Persistence.
					createEntityManagerFactory(
							"tpbateau");
		em = emf.createEntityManager();
	}
	public String ajouterBateau() {
		System.out.println("ajouterBateau");
		EntityTransaction tx = 
				em.getTransaction();
		tx.begin();
		em.persist(bateau);
		tx.commit();

		bateau = new Bateau();
		listerBateaux();
		return "listerBateaux";
	}
	
	public String ajouterUtilisateur() {
		System.out.println("ajouterUtilisateur");
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.persist(utilisateur);
		tx.commit();

		utilisateur = new Utilisateur();
		listerUtilisateurs();
		return "listerUtilisateurs";
	}

	public String supprimerBateau0() {
		System.out.println("supprimerBateau0");
		return "supprimerBateau";
	}
	
	public String supprimerUtilisateur0() {
		System.out.println("supprimerUtilisateur0");
		return "supprimerUtilisateur";
	}
	
	public String supprimerBateau() {
		System.out.println("supprimerBateau");
		return "listerBateaux";
	}
	
	public String supprimerUtilisateur() {
		System.out.println("supprimerUtilisateur");
		return "listerUtilisateurs";
	}
	
	public String modifierBateau() {
		System.out.println("modifierBateau");
		return "listerBateaux";
	}
	
	public String modifierUtilisateur() {
		System.out.println("modifierUtilisateur");
		return "listerUtilisateurs";
	}
	
	public String listerBateaux() {
		System.out.println("listerBateaux");
		listeBateaux = em.createQuery(
				"select b from Bateau b").
					getResultList();
		return "listerBateaux";
	}
	
	public String listerUtilisateurs() {
		System.out.println("listerUtilisateurs");
		listeUtilisateurs = em.createQuery(
				"select u from Utilisateur u").
					getResultList();
		return "listerUtilisateurs";
	}

	public String verificationUtilisateur(){
		System.out.println("verificationUtilisateur");
		listerUtilisateurs();
		for(int i = 0; i < listeUtilisateurs.size(); i++){		
			if(utilisateur.getLogin().equals(listeUtilisateurs.get(i).getLogin())){
				System.out.println("Authentification SUCCESS");
				return "authSuccess";
			}
		}
		return "authFail";
	}
	
	/********************************* getters setters *********************************/
	
	public Bateau getBateau() {
		return bateau;
	}

	public void setBateau(Bateau bateau) {
		this.bateau = bateau;
	}
	public List<Bateau> getListeBateaux() {
		return listeBateaux;
	}
	public void setListeBateaux(List<Bateau> listeBateaux) {
		this.listeBateaux = listeBateaux;
	}

	
	
	public Utilisateur getUtilisateur() {
		return utilisateur;
	}

	public void setUtilisateur(Utilisateur utilisateur) {
		this.utilisateur = utilisateur;
	}
	public List<Utilisateur> getListeUtilisateurs() {
		return listeUtilisateurs;
	}
	public void setListeUtilisateurs(List<Utilisateur> listeUtilisateurs) {
		this.listeUtilisateurs = listeUtilisateurs;
	}


}